大部分场景下,如果没有特殊的规格需求(如GPU、本地盘等),推荐您指定vCPU和内存来创建ECI Pod(即ECI实例),系统会尝试使用多种ECS规格进行支撑,以提供比ECS单规格更好的弹性和资源供应能力。
规格说明
您可以指定实例或者容器的vCPU和内存来创建ECI实例。如果指定的vCPU和内存不符合要求,系统将自动按照ECI支持的规格进行规整。规整时将向最接近的ECI规格进行规整,同时需满足指定的vCPU和内存≤ECI规格的vCPU和内存。例如:在华东1(杭州)地域创建ECI实例时,声明了7 vCPU,13 GiB内存,则实际创建的ECI实例为8 vCPU,14 GiB内存。
ECI支持的规格如下:
如果未指定vCPU和内存规格,系统默认采用2 vCPU和4 GiB内存的规格创建ECI实例。
目前仅支持一块弹性网卡,暂不支持多网卡能力。
各规格支持的默认临时存储空间大小均为30 GiB。
配置说明
指定vCPU和内存创建ECI Pod时,支持以下两种:
指定Pod内容器的vCPU和内存:通过定义Containers的limits或requests来指定,建议使用limits。
指定Pod级别的vCPU和内存:通过在Pod metadata中添加
k8s.aliyun.com/eci-use-specs
的Annotation来指定。
如果您没有指定,或者同时指定了limits、requests和eci-use-specs,实际生效情况如下:
场景 | Pod规格 |
全部未指定 | 按默认规格(2vCPU,4 GiB内存) |
仅指定limits | 汇总limits |
仅指定requests | 汇总requests |
同时指定limits和requests | 汇总limits(忽略requests) |
仅指定eci-use-specs | 按eci-use-specs的值 |
指定limits或requests的同时指定eci-use-specs | 按eci-use-specs的值 |
如果汇总limits、requests后的规格,或者eci-use-specs指定的规格不满足ECI规格要求,系统会自动进行资源规整,并按规整后的规格进行计费。
指定Pod内容器的vCPU和内存
该方式为Kubernetes默认方式。每个ECI Pod最多可以支持20个容器,每个容器的vCPU和内存规格可以自定义配置,但汇总到Pod级别时需满足ECI Pod的vCPU和内存约束。
ECI支持为特定容器(例如Sidecar容器)设置环境变量,实现在资源规整时忽略该容器,避免资源浪费。更多信息,请参见配置资源规整时忽略特定容器。
您可以直接定义Container的limits来指定该容器的vCPU和内存。配置示例如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: test
labels:
app: nginx
alibabacloud.com/eci: "true"
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
resources:
limits:
cpu: "500m" #指定nginx容器的vCPU为0.5 vCPU
memory: "1024Mi" #指定nginx容器的内存为1 GiB
- name: busybox
image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
command: ["sleep"]
args: ["999999"]
resources:
limits:
cpu: "1000m" #指定busybox容器的vCPU为1 vCPU
memory: "2048Mi" #指定busybox容器的内存为2 GiB
指定ECI Pod的vCPU和内存
该方式下,系统会尝试使用多种ECS规格进行支撑,以实现更好的弹性和资源供应能力。
如果您对规格有一定要求,例如只想使用6代ECS规格,可添加Annotation来指定ECS规格代数。更多信息,请参见指定ECS规格代数创建Pod。
该方式还具备以下优势:
Pod内容器可以不用指定vCPU和内存规格或者限制资源上限,各容器可以更大程度地共享资源。
在基因计算和Istio场景下,业务框架会自动为Pod添加Sidecar容器,通过指定Pod级别规格,ECI可以无缝对接这类业务框架。
您可以在Pod metadata中添加Annotation来指定Pod的vCPU和内存,配置示例如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-use-specs : "2-4Gi" #指定ECI Pod的vCPU为2 vCPU,内存为4 GiB
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
- name: busybox
image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
command: ["sleep"]
args: ["999999"]
resources:
limits:
cpu: "500m" #容器的vCPU上限
memory: "1024Mi" #容器的内存上限